package com.cyf.plc.di.builder

import com.cyf.plc.ui.fragment.*
import com.cyf.plc.ui.fragment.set.AttributeFragment
import com.cyf.plc.ui.fragment.set.SetPanelFragment
import com.cyf.plc.ui.fragment.set.SubAttributeFragment
import dagger.Module
import dagger.android.ContributesAndroidInjector
import kotlinx.coroutines.ExperimentalCoroutinesApi

@Module
abstract class FragmentBuilder {

    @ExperimentalCoroutinesApi
    @ContributesAndroidInjector
    abstract fun bindAttributeFragment(): AttributeFragment

    @ExperimentalCoroutinesApi
    @ContributesAndroidInjector
    abstract fun bindMainFragment(): MainFragment

    @ExperimentalCoroutinesApi
    @ContributesAndroidInjector
    abstract fun bindMainLightFragment(): MainLightFragment

    @ExperimentalCoroutinesApi
    @ContributesAndroidInjector
    abstract fun bindMainDarkFragment(): MainDarkFragment

    @ExperimentalCoroutinesApi
    @ContributesAndroidInjector
    abstract fun bindPlcModeFragment(): PlcModeFragment

    @ExperimentalCoroutinesApi
    @ContributesAndroidInjector
    abstract fun bindRoomFragment(): PlcRoomFragment

    @ExperimentalCoroutinesApi
    @ContributesAndroidInjector
    abstract fun bindPlcTempFragment(): PlcTempFragment

    @ExperimentalCoroutinesApi
    @ContributesAndroidInjector
    abstract fun bindSetPanelFragment(): SetPanelFragment

    @ExperimentalCoroutinesApi
    @ContributesAndroidInjector
    abstract fun bindSetSubAttributeFragment(): SubAttributeFragment

    @ExperimentalCoroutinesApi
    @ContributesAndroidInjector
    abstract fun bindPlcFaultFragment(): PlcFaultFragment
}